<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  
  <link rel="shortcut icon" href="../../img/favicon.ico">
  <title>Sequential 顺序模型 API - Keras 中文文档</title>
  <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>

  <link rel="stylesheet" href="../../css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../../css/theme_extra.css" type="text/css" />
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
  
  <script>
    // Current page data
    var mkdocs_page_name = "Sequential \u987a\u5e8f\u6a21\u578b API";
    var mkdocs_page_input_path = "models/sequential.md";
    var mkdocs_page_url = "/zh/models/sequential/";
  </script>
  
  <script src="../../js/jquery-2.1.1.min.js" defer></script>
  <script src="../../js/modernizr-2.8.3.min.js" defer></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
  <script>hljs.initHighlightingOnLoad();</script> 
  
  <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-61785484-1', 'keras.io');
      ga('send', 'pageview');
  </script>
  
</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
      <div class="wy-side-nav-search">
        <a href="../.." class="icon icon-home"> Keras 中文文档</a>
        <div role="search">
  <form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" title="Type search term here" />
  </form>
</div>
      </div>

      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
	<ul class="current">
	  
          
            <li class="toctree-l1">
		
    <a class="" href="../..">主页</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../why-use-keras/">为什么选择 Keras?</a>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">快速开始</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../../getting-started/sequential-model-guide/">Sequential 顺序模型指引</a>
                </li>
                <li class="">
                    
    <a class="" href="../../getting-started/functional-api-guide/">函数式 API 指引</a>
                </li>
                <li class="">
                    
    <a class="" href="../../getting-started/faq/">FAQ 常见问题解答</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">模型</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../about-keras-models/">关于 Keras 模型</a>
                </li>
                <li class=" current">
                    
    <a class="current" href="./">Sequential 顺序模型 API</a>
    <ul class="subnav">
            
    <li class="toctree-l3"><a href="#sequential-api">Sequential 模型 API</a></li>
    
        <ul>
        
            <li><a class="toctree-l4" href="#sequential">Sequential 模型方法</a></li>
        
        </ul>
    

    </ul>
                </li>
                <li class="">
                    
    <a class="" href="../model/">函数式 API</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">Layers</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../../layers/about-keras-layers/">关于 Keras 网络层</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/core/">核心网络层</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/convolutional/">卷积层 Convolutional</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/pooling/">池化层 Pooling</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/local/">局部连接层 Locally-connected</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/recurrent/">循环层 Recurrent</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/embeddings/">嵌入层 Embedding</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/merge/">融合层 Merge</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/advanced-activations/">高级激活层 Advanced Activations</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/normalization/">标准化层 Normalization</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/noise/">噪声层 Noise</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/wrappers/">层封装器 wrappers</a>
                </li>
                <li class="">
                    
    <a class="" href="../../layers/writing-your-own-keras-layers/">编写你自己的层</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">数据预处理</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../../preprocessing/sequence/">序列预处理</a>
                </li>
                <li class="">
                    
    <a class="" href="../../preprocessing/text/">文本预处理</a>
                </li>
                <li class="">
                    
    <a class="" href="../../preprocessing/image/">图像预处理</a>
                </li>
    </ul>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../losses/">损失函数 Losses</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../metrics/">评估标准 Metrics</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../optimizers/">优化器 Optimizers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../activations/">激活函数 Activations</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../callbacks/">回调函数 Callbacks</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../datasets/">常用数据集 Datasets</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../applications/">应用 Applications</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../backend/">后端 Backend</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../initializers/">初始化 Initializers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../regularizers/">正则化 Regularizers</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../constraints/">约束 Constraints</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../visualization/">可视化 Visualization</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../scikit-learn-api/">Scikit-learn API</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../utils/">工具</a>
	    </li>
          
            <li class="toctree-l1">
		
    <a class="" href="../../contributing/">贡献</a>
	    </li>
          
            <li class="toctree-l1">
		
    <span class="caption-text">经典样例</span>
    <ul class="subnav">
                <li class="">
                    
    <a class="" href="../../examples/addition_rnn/">Addition RNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/babi_rnn/">Baby RNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/babi_memnn/">Baby MemNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/cifar10_cnn/">CIFAR-10 CNN</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/cifar10_cnn_capsule/">CIFAR-10 CNN-Capsule</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/cifar10_cnn_tfaugment2d/">CIFAR-10 CNN with augmentation (TF)</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/cifar10_resnet/">CIFAR-10 ResNet</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/conv_filter_visualization/">Convolution filter visualization</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/image_ocr/">Image OCR</a>
                </li>
                <li class="">
                    
    <a class="" href="../../examples/imdb_bidirectional_lstm/">Bidirectional LSTM</a>
                </li>
    </ul>
	    </li>
          
        </ul>
      </div>
      &nbsp;
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../..">Keras 中文文档</a>
      </nav>

      
      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../..">Docs</a> &raquo;</li>
    
      
        
          <li>模型 &raquo;</li>
        
      
    
    <li>Sequential 顺序模型 API</li>
    <li class="wy-breadcrumbs-aside">
      
        <a href="https://github.com/keras-team/keras-docs-zh/edit/master/docs/models/sequential.md"
          class="icon icon-github"> Edit on GitHub</a>
      
    </li>
  </ul>
  <hr/>
</div>
          <div role="main">
            <div class="section">
              
                <h1 id="sequential-api">Sequential 模型 API</h1>
<p>在阅读这片文档前，请先阅读 <a href="/getting-started/sequential-model-guide">Keras Sequential 模型指引</a>。</p>
<hr />
<h2 id="sequential">Sequential 模型方法</h2>
<h3 id="compile">compile</h3>
<pre><code class="python">compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
</code></pre>

<p>用于配置训练模型。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>optimizer</strong>: 字符串（优化器名）或者优化器对象。详见 <a href="/optimizers">optimizers</a>。</li>
<li><strong>loss</strong>: 字符串（目标函数名）或目标函数。详见 <a href="/losses">losses</a>。
如果模型具有多个输出，则可以通过传递损失函数的字典或列表，在每个输出上使用不同的损失。模型将最小化的损失值将是所有单个损失的总和。</li>
<li><strong>metrics</strong>: 在训练和测试期间的模型评估标准。通常你会使用 <code>metrics = ['accuracy']</code>。
要为多输出模型的不同输出指定不同的评估标准，还可以传递一个字典，如 <code>metrics = {'output_a'：'accuracy'}</code>。</li>
<li><strong>loss_weights</strong>: 指定标量系数（Python浮点数）的可选列表或字典，用于加权不同模型输出的损失贡献。
    模型将要最小化的损失值将是所有单个损失的加权和，由 <code>loss_weights</code> 系数加权。
    如果是列表，则期望与模型的输出具有 1:1 映射。
    如果是张量，则期望将输出名称（字符串）映射到标量系数。</li>
<li><strong>sample_weight_mode</strong>: 如果你需要执行按时间步采样权重（2D 权重），请将其设置为 <code>temporal</code>。
默认为 <code>None</code>，为采样权重（1D）。如果模型有多个输出，则可以通过传递 mode 的字典或列表，以在每个输出上使用不同的 <code>sample_weight_mode</code>。</li>
<li><strong>weighted_metrics</strong>: 在训练和测试期间，由 sample_weight 或 class_weight 评估和加权的度量标准列表。</li>
<li><strong>target_tensors</strong>: 默认情况下，Keras 将为模型的目标创建一个占位符，在训练过程中将使用目标数据。相反，如果你想使用自己的目标张量（反过来说，Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据），您可以通过 <code>target_tensors</code> 参数指定它们。它应该是单个张量（对于单输出 Sequential 模型）。</li>
<li><strong>**kwargs</strong>: 当使用 Theano/CNTK 后端时，这些参数被传入 <code>K.function</code>。当使用 TensorFlow 后端时，这些参数被传递到 <code>tf.Session.run</code>。</li>
</ul>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>:  如果 <code>optimizer</code>, <code>loss</code>, <code>metrics</code> 或 <code>sample_weight_mode</code> 这些参数不合法。</li>
</ul>
<hr />
<h3 id="fit">fit</h3>
<pre><code class="python">fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
</code></pre>

<p>以固定数量的轮次（数据集上的迭代）训练模型。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>x</strong>: 训练数据的 Numpy 数组。
如果模型中的输入层被命名，你也可以传递一个字典，将输入层名称映射到 Numpy 数组。
如果从本地框架张量馈送（例如 TensorFlow 数据张量）数据，x 可以是 <code>None</code>（默认）。</li>
<li><strong>y</strong>: 目标（标签）数据的 Numpy 数组。
如果模型中的输出层被命名，你也可以传递一个字典，将输出层名称映射到 Numpy 数组。
如果从本地框架张量馈送（例如 TensorFlow 数据张量）数据，y 可以是 <code>None</code>（默认）。</li>
<li><strong>batch_size</strong>: 整数或 <code>None</code>。每次提度更新的样本数。如果未指定，默认为 32.</li>
<li><strong>epochs</strong>: 整数。训练模型迭代轮次。一个轮次是在整个 <code>x</code> 或 <code>y</code> 上的一轮迭代。请注意，与 <code>initial_epoch</code> 一起，<code>epochs</code> 被理解为 「最终轮次」。模型并不是训练了 <code>epochs</code> 轮，而是到第 <code>epochs</code> 轮停止训练。</li>
<li><strong>verbose</strong>: 0, 1 或 2。日志显示模式。
0 = 安静模式, 1 = 进度条, 2 = 每轮一行。</li>
<li><strong>callbacks</strong>: 一系列的 <code>keras.callbacks.Callback</code> 实例。一系列可以在训练时使用的回调函数。详见 <a href="/callbacks">callbacks</a>。</li>
<li><strong>validation_split</strong>: 在 0 和 1 之间浮动。用作验证集的训练数据的比例。模型将分出一部分不会被训练的验证数据，并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。验证数据是混洗之前 <code>x</code> 和<code>y</code> 数据的最后一部分样本中。</li>
<li><strong>validation_data</strong>: 元组 <code>(x_val，y_val)</code> 或元组 <code>(x_val，y_val，val_sample_weights)</code>，用来评估损失，以及在每轮结束时的任何模型度量指标。模型将不会在这个数据上进行训练。这个参数会覆盖 <code>validation_split</code>。</li>
<li><strong>shuffle</strong>: 布尔值（是否在每轮迭代之前混洗数据）或者 字符串 (<code>batch</code>)。<code>batch</code> 是处理 HDF5 数据限制的特殊选项，它对一个 batch 内部的数据进行混洗。当 <code>steps_per_epoch</code> 非 <code>None</code> 时，这个参数无效。</li>
<li><strong>class_weight</strong>: 可选的字典，用来映射类索引（整数）到权重（浮点）值，用于加权损失函数（仅在训练期间）。这可能有助于告诉模型 「更多关注」来自代表性不足的类的样本。</li>
<li><strong>sample_weight</strong>: 训练样本的可选 Numpy 权重数组，用于对损失函数进行加权（仅在训练期间）。您可以传递与输入样本长度相同的平坦（1D）Numpy 数组（权重和样本之间的 1：1 映射），或者在时序数据的情况下，可以传递尺寸为 <code>(samples, sequence_length)</code> 的 2D 数组，以对每个样本的每个时间步施加不同的权重。在这种情况下，你应该确保在 <code>compile()</code> 中指定 <code>sample_weight_mode="temporal"</code>。</li>
<li><strong>initial_epoch</strong>: 开始训练的轮次（有助于恢复之前的训练）。</li>
<li><strong>steps_per_epoch</strong>: 在声明一个轮次完成并开始下一个轮次之前的总步数（样品批次）。使用 TensorFlow 数据张量等输入张量进行训练时，默认值 <code>None</code> 等于数据集中样本的数量除以 batch 的大小，如果无法确定，则为 1。</li>
<li><strong>validation_steps</strong>: 只有在指定了 <code>steps_per_epoch</code>时才有用。停止前要验证的总步数（批次样本）。</li>
</ul>
<p><strong>返回</strong></p>
<p>一个 <code>History</code> 对象。其 <code>History.history</code> 属性是连续 epoch 训练损失和评估值，以及验证集损失和评估值的记录（如果适用）。 </p>
<p><strong>异常</strong></p>
<ul>
<li><strong>RuntimeError</strong>: 如果模型从未编译。</li>
<li><strong>ValueError</strong>: 在提供的输入数据与模型期望的不匹配的情况下。</li>
</ul>
<hr />
<h3 id="evaluate">evaluate</h3>
<pre><code class="python">evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)
</code></pre>

<p>在测试模式，返回误差值和评估标准值。</p>
<p>计算逐批次进行。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>x</strong>: 训练数据的 Numpy 数组。
如果模型中的输入层被命名，你也可以传递一个字典，将输入层名称映射到 Numpy 数组。
如果从本地框架张量馈送（例如 TensorFlow 数据张量）数据，x 可以是 <code>None</code>（默认）。</li>
<li><strong>y</strong>: 目标（标签）数据的 Numpy 数组。
  如果模型中的输出层被命名，你也可以传递一个字典，将输出层名称映射到 Numpy 数组。
  如果从本地框架张量馈送（例如 TensorFlow 数据张量）数据，y 可以是 <code>None</code>（默认）。</li>
<li><strong>batch_size</strong>: 整数或 <code>None</code>。每次提度更新的样本数。如果未指定，默认为 32.</li>
<li><strong>verbose</strong>: 0, 1。日志显示模式。0 = 安静模式, 1 = 进度条。</li>
<li><strong>sample_weight</strong>: 训练样本的可选 Numpy 权重数组，用于对损失函数进行加权（仅在训练期间）。
  您可以传递与输入样本长度相同的平坦（1D）Numpy 数组（权重和样本之间的 1：1 映射），或者在时序数据的情况下，可以传递尺寸为 <code>(samples, sequence_length)</code> 的 2D 数组，以对每个样本的每个时间步施加不同的权重。在这种情况下，你应该确保在 <code>compile()</code> 中指定 <code>sample_weight_mode="temporal"</code>。</li>
<li><strong>steps</strong>: 整数或 <code>None</code>。
  声明评估结束之前的总步数（批次样本）。默认值 <code>None</code>。</li>
</ul>
<p><strong>返回</strong></p>
<p>标量测试误差（如果模型只有单个输出且没有评估指标）或标量列表（如果模型具有多个输出和/或指标）。
属性 <code>model.metrics_names</code> 将提供标量输出的显示标签。</p>
<hr />
<h3 id="predict">predict</h3>
<pre><code class="python">predict(x, batch_size=None, verbose=0, steps=None)
</code></pre>

<p>为输入样本生成输出预测。</p>
<p>计算逐批次进行。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>x</strong>: 输入数据，Numpy 数组（或者如果模型有多个输入，则为 Numpy 数组列表）。</li>
<li><strong>batch_size</strong>: 整数。如未指定，默认为 32。</li>
<li><strong>verbose</strong>: 日志显示模式，0 或 1。</li>
<li><strong>steps</strong>: 声明预测结束之前的总步数（批次样本）。默认值 <code>None</code>。</li>
</ul>
<p><strong>返回</strong></p>
<p>预测的 Numpy 数组。</p>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>: 如果提供的输入数据与模型的期望数据不匹配，或者有状态模型收到的数量不是批量大小的倍数。</li>
</ul>
<hr />
<h3 id="train_on_batch">train_on_batch</h3>
<pre><code class="python">train_on_batch(x, y, sample_weight=None, class_weight=None)
</code></pre>

<p>一批样品的单次梯度更新。</p>
<p><strong>Arguments</strong></p>
<ul>
<li><strong>x</strong>: 训练数据的 Numpy 数组，如果模型具有多个输入，则为 Numpy 数组列表。如果模型中的所有输入都已命名，你还可以传入输入名称到 Numpy 数组的映射字典。</li>
<li><strong>y</strong>: 目标数据的 Numpy 数组，如果模型具有多个输入，则为 Numpy 数组列表。如果模型中的所有输出都已命名，你还可以传入输出名称到 Numpy 数组的映射字典。</li>
<li><strong>sample_weight</strong>: 训练样本的可选 Numpy 权重数组，用于对损失函数进行加权（仅在训练期间）。
  您可以传递与输入样本长度相同的平坦（1D）Numpy 数组（权重和样本之间的 1：1 映射），或者在时序数据的情况下，可以传递尺寸为 <code>(samples, sequence_length)</code> 的 2D 数组，以对每个样本的每个时间步施加不同的权重。在这种情况下，你应该确保在 <code>compile()</code> 中指定 <code>sample_weight_mode="temporal"</code>。</li>
<li><strong>class_weight</strong>: 可选的字典，用来映射类索引（整数）到权重（浮点）值，用于加权损失函数（仅在训练期间）。这可能有助于告诉模型 「更多关注」来自代表性不足的类的样本。</li>
</ul>
<p><strong>返回</strong></p>
<p>标量训练误差（如果模型只有单个输出且没有评估指标）或标量列表（如果模型具有多个输出和/或指标）。
属性 <code>model.metrics_names</code> 将提供标量输出的显示标签。</p>
<hr />
<h3 id="test_on_batch">test_on_batch</h3>
<pre><code class="python">test_on_batch(x, y, sample_weight=None)
</code></pre>

<p>在一批样本上评估模型。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>x</strong>: 训练数据的 Numpy 数组，如果模型具有多个输入，则为 Numpy 数组列表。如果模型中的所有输入都已命名，你还可以传入输入名称到 Numpy 数组的映射字典。</li>
<li><strong>y</strong>: 目标数据的 Numpy 数组，如果模型具有多个输入，则为 Numpy 数组列表。如果模型中的所有输出都已命名，你还可以传入输出名称到 Numpy 数组的映射字典。</li>
<li><strong>sample_weight</strong>: 训练样本的可选 Numpy 权重数组，用于对损失函数进行加权（仅在训练期间）。
  您可以传递与输入样本长度相同的平坦（1D）Numpy 数组（权重和样本之间的 1：1 映射），或者在时序数据的情况下，可以传递尺寸为 <code>(samples, sequence_length)</code> 的 2D 数组，以对每个样本的每个时间步施加不同的权重。在这种情况下，你应该确保在 <code>compile()</code> 中指定 <code>sample_weight_mode="temporal"</code>。</li>
</ul>
<p><strong>返回</strong></p>
<p>标量测试误差（如果模型只有单个输出且没有评估指标）或标量列表（如果模型具有多个输出和/或指标）。
属性 <code>model.metrics_names</code> 将提供标量输出的显示标签。</p>
<hr />
<h3 id="predict_on_batch">predict_on_batch</h3>
<pre><code class="python">predict_on_batch(x)
</code></pre>

<p>返回一批样本的模型预测值。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>x</strong>: 输入数据，Numpy 数组或列表（如果模型有多输入）。</li>
</ul>
<p><strong>返回</strong></p>
<p>预测值的 Numpy 数组。</p>
<hr />
<h3 id="fit_generator">fit_generator</h3>
<pre><code class="python">fit_generator(generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, shuffle=True, initial_epoch=0)
</code></pre>

<p>使用 Python 生成器或 <code>Sequence</code> 实例逐批生成的数据，按批次训练模型。</p>
<p>生成器与模型并行运行，以提高效率。
例如，这可以让你在 CPU 上对图像进行实时数据增强，以在 GPU 上训练模型。</p>
<p><code>keras.utils.Sequence</code> 的使用可以保证数据的顺序， 以及当 <code>use_multiprocessing=True</code> 时 ，保证每个输入在每个 epoch 只使用一次。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>generator</strong>: 一个生成器或 Sequence (<code>keras.utils.Sequence</code>) 对象的实例，以避免在使用多进程时出现重复数据。
生成器的输出应该为以下之一：<ul>
<li>一个 <code>(inputs, targets)</code> 元组</li>
<li>一个 <code>(inputs, targets, sample_weights)</code> 元组。
  这个元组（生成器的单个输出）表示一个独立批次。因此，此元组中的所有数组必须具有相同的长度（等于此批次的大小）。不同的批次可能具有不同的大小。例如，如果数据集的大小不能被批量大小整除，则最后一批时期通常小于其他批次。生成器将无限地在数据集上循环。当运行到第 <code>steps_per_epoch</code> 时，记一个 epoch 结束。</li>
</ul>
</li>
<li><strong>steps_per_epoch</strong>: 整数。在声明一个 epoch 完成并开始下一个 epoch 之前从 <code>generator</code> 产生的总步数（批次样本）。它通常应该等于你的数据集的样本数量除以批量大小。可选参数 <code>Sequence</code>：如果未指定，将使用 <code>len(generator)</code> 作为步数。</li>
<li><strong>epochs</strong>: 整数，数据的迭代总轮数。一个 epoch 是对所提供的整个数据的一轮迭代，由 <code>steps_per_epoch</code> 所定义。请注意，与 <code>initial_epoch</code> 一起，参数 <code>epochs</code> 应被理解为 「最终轮数」。模型并不是训练了 <code>epochs</code> 轮，而是到第 <code>epochs</code> 轮停止训练。</li>
<li><strong>verbose</strong>: 日志显示模式。0，1 或 2。0 = 安静模式，1 = 进度条，2 = 每轮一行。</li>
<li><strong>callbacks</strong>: <code>keras.callbacks.Callback</code> 实例列表。在训练时调用的一系列回调。详见 <a href="/callbacks">callbacks</a>。</li>
<li><strong>validation_data</strong>: 它可以是以下之一：<ul>
<li>验证数据的生成器或 <code>Sequence</code> 实例</li>
<li>一个 <code>(inputs, targets)</code> 元组</li>
<li>一个 <code>(inputs, targets, sample_weights)</code> 元组。</li>
</ul>
</li>
<li><strong>validation_steps</strong>: 仅当 <code>validation_data</code> 是一个生成器时才可用。
每个 epoch 结束时验证集生成器产生的步数。它通常应该等于你的数据集的样本数量除以批量大小。可选参数 <code>Sequence</code>：如果未指定，将使用 <code>len(generator)</code> 作为步数。</li>
<li><strong>class_weight</strong>: 可选的字典，用来映射类索引（整数）到权重（浮点）值，用于加权损失函数（仅在训练期间）。这可能有助于告诉模型 「更多关注」来自代表性不足的类的样本。</li>
<li><strong>max_queue_size</strong>: 整数。生成器队列的最大尺寸。如果未指定，<code>max_queue_size</code> 将默认为 10。</li>
<li><strong>workers</strong>: 整数。使用基于进程的多线程时启动的最大进程数。如果未指定，<code>worker</code> 将默认为 1。如果为 0，将在主线程上执行生成器。</li>
<li><strong>use_multiprocessing</strong>: 如果 True，则使用基于进程的多线程。如果未指定，<code>use_multiprocessing</code> 将默认为 <code>False</code>。请注意，因为此实现依赖于多进程，所以不应将不可传递的参数传递给生成器，因为它们不能被轻易地传递给子进程。</li>
<li><strong>shuffle</strong>: 布尔值。是否在每轮迭代之前打乱 batch 的顺序。只能与 <code>Sequence</code> (<code>keras.utils.Sequence</code>) 实例同用。在 <code>steps_per_epoch</code> 不为 <code>None</code> 是无效果。</li>
<li><strong>initial_epoch</strong>: 整数。开始训练的轮次（有助于恢复之前的训练）。</li>
</ul>
<p><strong>返回</strong></p>
<p>一个 <code>History</code> 对象。其 <code>History.history</code> 属性是连续 epoch 训练损失和评估值，以及验证集损失和评估值的记录（如果适用）。 </p>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>: 如果生成器生成的数据格式不正确。</li>
</ul>
<p><strong>例子</strong></p>
<pre><code class="python">def generate_arrays_from_file(path):
    while True:
        with open(path) as f:
            for line in f:
                # 从文件中的每一行生成输入数据和标签的 numpy 数组
                x1, x2, y = process_line(line)
                    yield ({'input_1': x1, 'input_2': x2}, {'output': y})

model.fit_generator(generate_arrays_from_file('/my_file.txt'),
                    steps_per_epoch=10000, epochs=10)
</code></pre>

<hr />
<h3 id="evaluate_generator">evaluate_generator</h3>
<pre><code class="python">evaluate_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)
</code></pre>

<p>在数据生成器上评估模型。</p>
<p>这个生成器应该返回与 <code>test_on_batch</code> 所接收的同样的数据。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>generator</strong>: 生成器，生成 (inputs, targets)
或 (inputs, targets, sample_weights)，或 Sequence (<code>keras.utils.Sequence</code>) 对象的实例，以避免在使用多进程时出现重复数据。</li>
<li><strong>steps</strong>: 在停止之前，来自 <code>generator</code> 的总步数 (样本批次)。
可选参数 <code>Sequence</code>：如果未指定，将使用<code>len(generator)</code> 作为步数。</li>
<li><strong>max_queue_size</strong>: 生成器队列的最大尺寸。</li>
<li><strong>workers</strong>: 整数。使用基于进程的多线程时启动的最大进程数。如果未指定，<code>worker</code> 将默认为 1。如果为 0，将在主线程上执行生成器。</li>
<li><strong>use_multiprocessing</strong>: 如果 True，则使用基于进程的多线程。
请注意，因为此实现依赖于多进程，所以不应将不可传递的参数传递给生成器，因为它们不能被轻易地传递给子进程。</li>
<li><strong>verbose</strong>：日志显示模式，0 或 1。</li>
</ul>
<p><strong>返回</strong></p>
<p>标量测试误差（如果模型只有单个输出且没有评估指标）或标量列表（如果模型具有多个输出和/或指标）。
属性 <code>model.metrics_names</code> 将提供标量输出的显示标签。</p>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>: 如果生成器生成的数据格式不正确。</li>
</ul>
<hr />
<h3 id="predict_generator">predict_generator</h3>
<pre><code class="python">predict_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)
</code></pre>

<p>为来自数据生成器的输入样本生成预测。</p>
<p>这个生成器应该返回与 <code>predict_on_batch</code> 所接收的同样的数据。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>generator</strong>: 返回批量输入样本的生成器，或 Sequence (<code>keras.utils.Sequence</code>) 对象的实例，以避免在使用多进程时出现重复数据。</li>
<li><strong>steps</strong>: 在停止之前，来自 <code>generator</code> 的总步数 (样本批次)。
可选参数 <code>Sequence</code>：如果未指定，将使用<code>len(generator)</code> 作为步数。</li>
<li><strong>max_queue_size</strong>: 生成器队列的最大尺寸。</li>
<li><strong>workers</strong>: 整数。使用基于进程的多线程时启动的最大进程数。如果未指定，<code>worker</code> 将默认为 1。如果为 0，将在主线程上执行生成器。</li>
<li><strong>use_multiprocessing</strong>: 如果 True，则使用基于进程的多线程。
请注意，因为此实现依赖于多进程，所以不应将不可传递的参数传递给生成器，因为它们不能被轻易地传递给子进程。</li>
<li><strong>verbose</strong>: 日志显示模式， 0 或 1。</li>
</ul>
<p><strong>返回</strong></p>
<p>预测值的 Numpy 数组。</p>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>: 如果生成器生成的数据格式不正确。</li>
</ul>
<hr />
<h3 id="get_layer">get_layer</h3>
<pre><code class="python">get_layer(name=None, index=None)
</code></pre>

<p>根据名称（唯一）或索引值查找网络层。</p>
<p>如果同时提供了 <code>name</code> 和 <code>index</code>，则 <code>index</code> 将优先。</p>
<p>根据网络层的名称（唯一）或其索引返回该层。索引是基于水平图遍历的顺序（自下而上）。</p>
<p><strong>参数</strong></p>
<ul>
<li><strong>name</strong>: 字符串，层的名字。</li>
<li><strong>index</strong>: 整数，层的索引。</li>
</ul>
<p><strong>返回</strong></p>
<p>一个层实例。</p>
<p><strong>异常</strong></p>
<ul>
<li><strong>ValueError</strong>: 如果层的名称或索引不正确。</li>
</ul>
              
            </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="../model/" class="btn btn-neutral float-right" title="函数式 API">Next <span class="icon icon-circle-arrow-right"></span></a>
      
      
        <a href="../about-keras-models/" class="btn btn-neutral" title="关于 Keras 模型"><span class="icon icon-circle-arrow-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <!-- Copyright etc -->
    
  </div>

  Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
      
        </div>
      </div>

    </section>

  </div>

  <div class="rst-versions" role="note" style="cursor: pointer">
    <span class="rst-current-version" data-toggle="rst-current-version">
      
          <a href="https://github.com/keras-team/keras-docs-zh/" class="fa fa-github" style="float: left; color: #fcfcfc"> GitHub</a>
      
      
        <span><a href="../about-keras-models/" style="color: #fcfcfc;">&laquo; Previous</a></span>
      
      
        <span style="margin-left: 15px"><a href="../model/" style="color: #fcfcfc">Next &raquo;</a></span>
      
    </span>
</div>
    <script>var base_url = '../..';</script>
    <script src="../../js/theme.js" defer></script>
      <script src="../../search/main.js" defer></script>

</body>
</html>
